#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

//int main()
//{
//	int n = 0;
//	scanf("%d",&n);
//	int count = 0;
//	int arr[100000] = { 0 };
//	for (int i = 0; i < n; i++)
//	{
//		scanf("%d", &arr[i]);
//	}
//
//    for (int i = 0; i < n; i++)
//    {
//        if (arr[i] == -1)
//            continue;
//        count = 1;
//        for (int j = i + 1; j < n; j++)
//        {
//
//            if (arr[i] == arr[j])
//            {
//                count++;
//                arr[j] = -1;
//            }
//        }
//        if (count % 2 == 1)
//        {
//            printf("%d", arr[i]);
//            break;
//        }
//    }
//	return 0;
//}

//int main()
//{
//	float f[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	for (int i = 0; i < 10;)
//	{
//		if (f[++i] == 0)
//			break;
//	}
//	return 0;
//}

//void GetMemory(char** p, int num)
//{
//	if (NULL == p && num <= 0)//1
//		return;
//	*p = (char*)malloc(num);
//	return;
//}
//int main()
//{
//	char* str = NULL;
//	GetMemory(&str, 80); //2
//	if (NULL != str)
//	{
//		strcpy(&str, "hello"); //3
//		printf(str); //4
//	}
//	return 0;
//}

//#define MAX 255
//int main()
//{
//	unsigned char A[MAX], i;
//	for (i = 0; i <= MAX; i++)
//		A[i] = i;
//	return 0;
//}

//int main()
//{
//	unsigned char i = 7;
//	int j = 0;
//	for (; i > 0; i -= 3)
//	{
//		++j;
//	}
//	printf("%d\n", j);
//	return 0;
//}

//int main()
//{
//	char str[1000] = { 0 };
//	scanf("%s", &str);
//	int k = 0;
//	scanf("%d", &k);
//	for (int i = 0; i < k; i++)
//	{
//		printf("%c", str[i]);
//	}
//	return 0;
//}

int main()
{
	int n, k;
	scanf("%d %d", &n, &k);
	int i, j, count = 0;
	for ( i = 1; i <= n; i++)
	{
		for ( j = 1; j <= n; j++)
		{
			if (i % j >= k)
			{
				count++;
			}
		}
	}
	printf("%d", count);
	return 0;
}